<template>
    <div class="numControl">
        <svg class="symbol" aria-hidden="true" @click="decrease">
            <use xlink:href="#icon-base-reduce"></use>
        </svg>
        <div class="count">{{ count }}</div>
        <!-- <input class="count" v-model="count" placeholder="" disabled="disabled" type="number" onkeyup="this.value=this.value.replace(/[^\d]/g,'')" /> -->
        <!--@blur="changeNum"-->
        <svg class="symbol plus" aria-hidden="true" @click="add">
            <use xlink:href="#icon-jiahaohao"></use>
        </svg>
    </div>
</template>

<script>
export default {
    name: 'num-control',
    data() {
        return {
            count: this.num,
            good: this.goods
        };
    },
    props: {
        num: {
            type: Number
        },
        min: {
            type: Number
        },
        isCart: {
            type: Boolean
        },
        isTuangou: {
            type: Number
        },
        goods: {
            type: Object
        }
    },
    created() {},
    methods: {
        add() {
            this.count++;
            if (this.count <= 1) {
                this.count = 1;
            }
            if (this.isCart) {
                // 购物车中传入商品信息，非购物车不传
                if (this.count <= this.good.stock) {
                    this.good.num = this.count;
                    this.$emit('changeNum', this.good);
                } else {
                    this.$toast('库存不足，请重新选择');
                    this.count = this.good.stock;
                }
            } else {
                this.$emit('changeNumber', this.count);
            }
        },
        decrease() {
            if (this.count <= 1) {
                this.count = 1;
            } else {
                // console.log('isTuangou', this.isTuangou && this.count == this.num, this.min);
                if (this.isTuangou && this.count <= this.min) {
                    this.count == this.min;
                    this.$toast(this.min + '件起购');
                    return;
                }
                this.count--;
                if (this.isCart) {
                    // 购物车中传入商品信息，非购物车不传
                    this.good.num = this.count;
                    this.$emit('changeNum', this.good);
                } else {
                    this.$emit('changeNumber', this.count);
                }
            }
        }
        // changeNum() {
        // }
    },
    watch: {
        num(val) {
            this.count = val;
        }
    },
    beforeCreate() {
        // 可以在这加个loading事件，在加载实例时触发
        // 这个阶段实例的data、methods是读不到的
    },

    beforeMount() {
        // 相关的 render 函数首次被调用。
    },
    mounted() {
        // 挂载元素，获取到DOM节点
        // el选项的DOM节点 被新创建的 vm的el 替换，并挂载到实例上去之后调用此生命周期函数。此时实例的数据在DOM节点上进行渲染
    },
    beforeUpdate() {
        // 数据更新时调用，但不进行DOM重新渲染，在数据更新时DOM没渲染前可以在这个生命函数里进行状态处理
    },
    updated() {
        //  如果对数据统一处理，在这里写上相应函数
        // 这个状态下数据更新并且DOM重新渲染，当这个生命周期函数被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。当实例每次进行数据更新时updated都会执行
    },
    beforeDestroy() {
        // 可以做一个确认停止事件的确认框
    },
    destroyed() {
        // Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁
    }
};
</script>

<style scoped lang="stylus">
@import '~@/assets/main.styl';

.numControl {
    display: flex;
    background-color: grayF;

    .symbol {
        width: vw(22);
        height: vw(22);
        fill: gray9;

        .plus {
            fill: gray3;
        }
    }

    .count {
        width: vw(40);
        text-align: center;
        height: vw(22);
        line-height: vw(22);
        outline: none;
        background-color: grayF;
        word-vw(word16, gray3);
    }
}
</style>
